home *** CD-ROM | disk | FTP | other *** search
-
-
- I am testing out the new library (2.alpha?) which has a lot of
- new features largely as a result comment on this list (many from
- Dan Connoly, but also others). So I thought I'd bounce the end result
- off you all as to check it for stupidities.
-
- The driving forces are putting in MIME, and allowing the library
- to be used by disparate browsers and editors and servers without
- modification.
-
- The thing is still all portable C but even more OO in style. Two new
- objects are HTStream which is something you can write to .. it
- supports
-
- put_character
- put_string
- write /* buffer */
- end
- free
-
- Some of the machinery works character by character
- (state machine parsers) but it's useful to have faster methods when
- there is no characterwise intervention.
-
- This is to allow MIME encoding pipelines to be built, as well as the
- existing facilities to be more flexible. Streams stack, and freeing
- the top of the stack frees off the stack. As a side issue the stream
- idea allows the difference between sockets and FILE * to be overcome
- cleanly without the hacks necessary on some systems which shall be
- nameless. Streams subclasses exist to
-
- write to a FILE *
- write to a socket
- parse an SGML file of (dtd)
- pushing the results into (structured)
- convert plain text to valid HTML -> other stream
- format a (structured) described by (dtd) as plain text
- pushing the results -> other stream
- parse a MIME document (to come)
-
- There is a different creation routine for each case.
- The "structured" object is a subclass of HTStream called
- HTStructured. It is a sort of rich stream, accepting also the methods
-
- start_element(element_number, attributes)
- end_element(elemenet_number)
- put_entity(entity_number)
-
- Obviously an HTStructured thing has a pointer to a DTD structure
- so that the element numbers and entity numbers make sense.
- Elements and entities are passed around as numbers so that the
- string lookup is only done once if at all.
-
- Structued subclasses objects exist to
-
- Pretty-print structued text to plain text stream
- Generate SGML for the stream, given its DTD
- Present the structured object to the user
-
- This last one is the one you browser writers hook into
- and it should be alot easier than tangling with styles.
-
- You can also of course regenerate the stream from your
- widget and use the HTML generator structured object
- to write your file back to the server. (Thisis to
- encourage more hypertext editors out there!)
-
- There is another class of object called a protocol.
- It supports GET and will soon support PUT and other
- useful things. Current subclasses handle
-
- http
- news
- gopher
- files and directories
- FTP files and directories
- WAIS without gateway will come
-
- Typically News and Gophe protocol
- objects ask for a HTStructured object (which may
- in fact go to a display, or a client if we are a server, or
- a file etc through a small stream stack) and build it.
- Although the structured object is defined by a DTD,
- and has an SGML model, there is no generation of SGML from
- news, etc within a browser for speed (unless the user wants
- to save something as SGML).
-
- Other things .. a common interface for alerts, confirmation and
- questions to the user from the bowels of the library, and sometime a
- spinning callback for geting out of
- those long timeouts..
-
- Constructive criticism welcome, I'll put the code out
- when I can.
-
- Tim Berners-Lee
-
-
-
-
-